// 闲置物品列表页面逻辑
const apiService = require('../../../js/services/api/sharedDatabaseService');

Page({
  data: {
    itemsList: [],
    categoryOptions: ['全部类别', '工具类', '电器类', '家具类', '运动器材', '其他'],
    selectedCategory: 0,
    durationOptions: [
      { label: '全部时长', value: 0 },
      { label: '1-3天', value: 3 },
      { label: '1周', value: 7 },
      { label: '2周', value: 14 },
      { label: '1个月', value: 30 }
    ],
    selectedDuration: 0,
    page: 1,
    hasMore: true,
    loading: false,
    params: {}
  },

    onLoad: function (options) {
    wx.setNavigationBarTitle({ title: '闲置物品共享' });
    this.loadItemsList();
  },

  onShow: function () {
    // 页面显示时不自动加载数据，避免重复加载
    // 数据加载已在onLoad中完成
  },

  onPullDownRefresh: function () {
    this.refreshList();
  },

  onReachBottom: function () {
    if (this.data.hasMore && !this.data.loading) {
      this.loadMore();
    }
  },

  /**
   * 加载物品列表数据
   */
  async loadItemsList() {
    if (this.data.loading) return;
    
    this.setData({ loading: true });
    
    // 构建查询参数
    const params = {
      page: this.data.page,
      category: this.data.selectedCategory === 0 ? '' : this.data.categoryOptions[this.data.selectedCategory],
      duration: this.data.selectedDuration === 0 ? '' : this.data.durationOptions[this.data.selectedDuration].value
    };

    this.setData({
      params: params
    });

    try {

      // 直接调用API获取真实数据
      const result = await apiService.getIdleItems(params);


      // 增强数据格式验证的健壮性
      if (!result) {
        throw new Error('API返回为空');
      }
      
      // 尝试从不同的数据结构中获取数据
      let data = null;
      if (Array.isArray(result)) {
        data = result;
      } else if (result.data) {
        // 检查data是否是数组
        if (Array.isArray(result.data)) {
          data = result.data;
        } else if (result.data.data && Array.isArray(result.data.data)) {
          // 处理嵌套data结构
          data = result.data.data;
        } else {
          throw new Error(`API返回data字段不是数组: ${JSON.stringify(result.data)}`);
        }
      } else if (result.items && Array.isArray(result.items)) {
        data = result.items;
      } else {
        throw new Error(`API返回数据格式不正确: ${JSON.stringify(result)}`);
      }




      // 确保页码为1时清空现有数据
      const newList = this.data.page === 1 ? data : [...this.data.itemsList, ...data];
      this.setData({
        itemsList: newList,
        hasMore: data.length === 10,
        loading: false
      });

    } catch (error) {


      // 请求失败时使用模拟数据
      const mockData = this.getMockItemsData();


      // 验证模拟数据格式
      if (!mockData || !Array.isArray(mockData.data)) {

        this.setData({
          itemsList: [],
          hasMore: false,
          loading: false
        });
        wx.showToast({
          title: '数据加载失败',
          icon: 'none'
        });
        return;
      }

      // 清空现有数据，避免与模拟数据混合
      this.setData({
        itemsList: mockData.data,
        hasMore: false,
        loading: false
      });
      wx.showToast({
        title: '网络请求失败，使用模拟数据',
        icon: 'none'
      });
    }
  },

  /**
   * 获取模拟物品数据
   */
  getMockItemsData() {
    return {
      data: [
        {
          id: 101,
          itemName: '电钻（模拟）',
          itemCategory: '工具类',
          itemDesc: '全新电钻，功率800W，适合家庭装修使用。包含钻头套装，使用方便。',
          borrowDuration: 3,
          contactInfo: '138****1234',
          borrowCondition: '需要押金100元，使用后归还',
          imageUrl: '/img/items/drill.jpg',
          status: 'approved',
          createTime: '2025-01-27'
        },
        {
          id: 102,
          itemName: '梯子（模拟）',
          itemCategory: '工具类',
          itemDesc: '家用梯子，高度2米，铝合金材质，轻便耐用。',
          borrowDuration: 7,
          contactInfo: '139****5678',
          borrowCondition: '免费借用，请爱护使用',
          imageUrl: '/img/items/ladder.jpg',
          status: 'approved',
          createTime: '2025-01-26'
        },
        {
          id: 3,
          itemName: '吸尘器',
          itemCategory: '电器类',
          itemDesc: '无线吸尘器，续航30分钟，适合小户型清洁。',
          borrowDuration: 5,
          contactInfo: '137****9012',
          borrowCondition: '需要押金200元',
          imageUrl: '/img/items/vacuum.jpg',
          status: 'approved',
          createTime: '2025-01-25'
        },
        {
          id: 4,
          itemName: '折叠桌',
          itemCategory: '家具类',
          itemDesc: '便携折叠桌，适合户外活动或临时使用。',
          borrowDuration: 14,
          contactInfo: '136****3456',
          borrowCondition: '免费借用',
          imageUrl: '/img/items/table.jpg',
          status: 'approved',
          createTime: '2025-01-24'
        },
        {
          id: 5,
          itemName: '跑步机',
          itemCategory: '运动器材',
          itemDesc: '家用跑步机，可调节速度，适合室内健身。',
          borrowDuration: 30,
          contactInfo: '135****7890',
          borrowCondition: '需要押金500元',
          imageUrl: '/img/items/treadmill.jpg',
          status: 'approved',
          createTime: '2025-01-23'
        }
      ]
    };
  },

  /**
   * 加载模拟数据
   */
  loadMockData() {
    const mockData = this.getMockItemsData();
    this.setData({
      itemsList: mockData.data,
      hasMore: mockData.data.length === 10,
      loading: false
    });
  },

  /**
   * 刷新列表
   */
  refreshList() {
    this.setData({ page: 1, hasMore: true });
    this.loadItemsList();
    wx.stopPullDownRefresh();
  },

  /**
   * 加载更多
   */
  loadMore() {
    this.setData({ page: this.data.page + 1 });
    this.loadItemsList();
  },

  /**
   * 选择类别
   */
  onCategoryChange(e) {
    const index = e.detail.value;
    this.setData({ 
      selectedCategory: index,
      page: 1,
      hasMore: true
    });
    this.loadItemsList();
  },

  /**
   * 选择借用时长
   */
  onDurationChange(e) {
    const index = e.detail.value;
    this.setData({ 
      selectedDuration: index,
      page: 1,
      hasMore: true
    });
    this.loadItemsList();
  },

  /**
   * 点击物品项
   */
  onItemTap(e) {
    const itemId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/neighborhood-help/idle-sharing/detail?id=${itemId}`
    });
  },

  /**
   * 发布闲置物品
   */
  onPublishItem() {
    wx.navigateTo({
      url: '/pages/neighborhood-help/idle-sharing/register'
    });
  },

  /**
   * 申请借用
   */
  onBorrowApply(e) {
    const itemId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/neighborhood-help/idle-sharing/borrow-apply?id=${itemId}`
    });
  },

  /**
   * 联系物主
   */
  onContactOwner(e) {
    const itemId = e.currentTarget.dataset.id;
    // 查找当前物品信息
    const item = this.data.itemsList.find(item => item.id === itemId);
    if (item && item.contactInfo) {
      wx.showModal({
        title: '联系物主',
        content: `物主联系方式: ${item.contactInfo}\n\n是否拨打该电话?`,
        confirmText: '拨打',
        cancelText: '取消',
        success(res) {
          if (res.confirm) {
            wx.makePhoneCall({
              phoneNumber: item.contactInfo
            });
          }
        }
      });
    } else {
      wx.showToast({
        title: '未找到联系方式',
        icon: 'none'
      });
    }
  },

  /**
   * 图片加载错误处理
   */
  onImageError(e) {
    const itemId = e.currentTarget.dataset.id;
    const { itemsList } = this.data;
    const index = itemsList.findIndex(item => item.id === itemId);
    if (index !== -1) {
      // 创建新数组，避免直接修改原数组
      const newItemsList = [...itemsList];
      // 设置默认图片
      newItemsList[index].imageUrl = '/img/tabbar_resource.png';
      this.setData({
        itemsList: newItemsList
      });
    }
  }
});